package com.demo.core.tools;

import java.math.BigDecimal;
import java.security.MessageDigest;
import java.util.Random;

/**
 * 
 * 开发公司：九樱天下<br/>
 * 版权：九樱天下<br/>
 * <p>
 * 
 * <p>
 * 
 * 区分　责任人　日期　　　　说明<br/>
 * 创建　周柏成　2014年5月8日 　<br/>
 * <p>
 * 工具类
 * <p>
 * 
 * @author zhou-baicheng
 * 
 * @version 1.0,2014年5月8日 <br/>
 * 
 */
public class MathUtil {

	/**
	 * 获取6-10 的随机位数数字
	 * 
	 * @return result
	 */
	public static String getRandom620() {
		String result = "";
		Random rand = new Random();
		int n = 20;
		boolean[] bool = new boolean[n];
		int randInt = 0;
		for (int i = 0; i < 6; i++) {
			do {
				randInt = rand.nextInt(n);

			} while (bool[randInt]);

			bool[randInt] = true;
			result += randInt;
		}
		return result;
	}

	/**
	 * MD5
	 * 
	 * @param str
	 * @return
	 * @throws Exception
	 */
	public static String getMD5(String str) throws Exception {
		MessageDigest messageDigest = null;
		messageDigest = MessageDigest.getInstance("MD5");
		messageDigest.reset();
		messageDigest.update(str.getBytes("UTF-8"));
		byte[] byteArray = messageDigest.digest();
		StringBuffer md5StrBuff = new StringBuffer();
		for (int i = 0; i < byteArray.length; i++) {
			if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)
				md5StrBuff.append("0").append(
						Integer.toHexString(0xFF & byteArray[i]));
			else
				md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
		}
		return md5StrBuff.toString();
	}
	
	/**
	 * 方法描述: 四舍五入处理
	 * @param value 待处理的数字
	 * @param scale 默认保留两位
	 * @return
	 */
	public static Double round(double value, int scale) {
		
		return round(value, scale, BigDecimal.ROUND_HALF_EVEN);
	}
	
	/**
	 * 方法描述: 四舍五入处理
	 * @param value 待处理的数字
	 * @param scale 保留几位
	 * @param roundingMode 舍入模式  
	 * @return
	 */
	public static Double round(double value, int scale, int roundingMode) {
		BigDecimal b = new BigDecimal(value);
		return b.setScale(scale, roundingMode).doubleValue();
	}

	/**
	 * 方法描述: 四舍五入处理
	 * @param value 待处理的数字
	 * @param scale 保留几位
	 * @param roundingMode 舍入模式  
	 * @return
	 */
	public static String round(String value, int scale, int roundingMode) {
		BigDecimal b = new BigDecimal(value);
		return b.setScale(scale, roundingMode).toString();
	}
}